package com.chris.design.pattern.samples.template;

/**
 *  模板方法设计模式
 *
 * @author Chris
 * @since 2019/10/7
 */
public abstract class AbstractTemplate {

    /**
     * 模板方法
     */
    public void templateMehtod() {
        init();
        apply();
        end();
    }

    protected void init() {
        System.out.println("====init==AbstractTemplate抽象层已实现，子类可覆盖========");
        System.out.println("====init==AbstractTemplate抽象层已实现，做一些事情========");
    }

    /**
     * 留给子类去实现
     */
    protected abstract void apply();


    protected void end() {
        System.out.println("====AbstractTemplate抽象层已实现，do nothing，子类可覆盖========");
    }
}
